package org.onion.pattern.event.outbox;


import java.util.List;
import java.util.Optional;

public interface EventOutbox {

    /**
     * 事件投递
     */
    void delivery(Object event);

    /**
     * 事件投递
     */
    void delivery(List<Object> events);

    /**
     * 事件提取
     */
    Optional<Object> retrieval(String key);

    /**
     * 发送已就绪的事件
     */
    void flush();

    /**
     * 关闭
     */
    void shutdown();

    void start();

}
